function [Result] = Ddavid_MPU(DataTraining, DataTesting, SampledLabel, TrueLabelTesting, Option, CTable)

SampledLabel(SampledLabel == -1) = 0;
CTable(CTable == 0) = 1;

[Result.W] = Ddavid_MPU_stochastic_gradient_descent_training(DataTraining, SampledLabel, Option.IterN, Option.Alpha, CTable);
[Result.Prob] = Ddavid_MPU_stochastic_gradient_descent_testing(DataTesting, Result.W, CTable);

Result.Pre_Labels = zeros(size(Result.Prob, 1), size(Result.Prob, 2));
Result.Pre_Labels(Result.Prob < 0.5) = -1;
Result.Pre_Labels(Result.Prob >= 0.5) = 1;

Result.HammingLoss = Hamming_loss(Result.Pre_Labels, TrueLabelTesting);
[Result.Micro, Result.Macro] = Ddavid_get_micro_macro_prf(TrueLabelTesting, Result.Pre_Labels);
